iT邦幫忙

2024 iThome 鐵人賽

DAY 24
0
佛心分享-我的私藏工具箱

正則!好好表達系列 第 24

Oracle語法遷移到MySQL的眉角

  • 分享至 

  • xImage
  •  

需求是有部份Oracle的Table要遷移到MySQL,其中有個備註欄位內容長得像這樣:

1.健康狀況:OOXX;2.認知狀況:XXOO;3.金融知識:AABB

該備註內容在Oracle是用多筆欄位值用字串相連,然後計算長度將最尾碼的分號去掉。但遷移到MySQL就有點卡卡的。

  • 第一個眉角是字串連接,在大部份DB,都用||串連字串。但MySQL似乎當作or使用,非得引用concat函數來連接字串。
  • 第二個character,在Oracle的LENGTH函數是以character為單位,但LENGTH函數在MySQL以byte為單位,也就是一般中文字占兩個byte,有的會占3 byte,若要以character為單位,要改用char_length或character_length。
  • 第三個,承上,要刪掉字串最後一個字分號,使用SUBSTR搭配CHAR_LENGTH計算常真的刪不到。所以借助MySQL的Regex,遇到是分號結尾就置換成空字串。
REGEX_REPLACE(field, ';$', '')

上一篇
desc出來的schema由Sublime的Regex生成VO
下一篇
弱掃修正進度追踪
系列文
正則!好好表達30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言